// object 
// 接口的作用就是为这些类型命名和为你的代码或第三方代码定义契约。

// 1. 普通对象
interface PersonType {
	// 必须属性
	name: string
	age: number
	// 可选属性
	sex?: string
	// 只读属性
	readonly code: number
	// 其他属性
	[propsName: string]: any
}

const person: PersonType = {
	name: '张三',
	age: 18,
	sex: '男',
	code: 1234567654321,

	like: ['篮球', '足球'],
	height: 180,
	weight: "100kg"
}



person.name = '李四'

export default 1

// 算法:

function add(...arr: number[]): number {
	return arr.reduce((p, n) => {
		return p + n
	}, 0)
}

const result1 = add(1, 2, 3)
const result2 = add(1, 2, 3, 4, 5)
const result3 = add(1, 2)

console.log(result1, result2, result3)

function findArrayLongString(arr: string[]): string {
	return arr.reduce((p, n) => {
		if (p.length < n.length) {
			return n
		} else {
			return p
		}
	})
}

const s1 = findArrayLongString(['qweq', 'qweqweqweq', 'qweqrtyrtyrweqweqwe'])
const s2 = findArrayLongString(['12312311231231231', 'qweqweqweq', 'qweqweqweqwe'])
const s3 = findArrayLongString(['qweq', 'qweqweqweq', './,/.,/.,./,/,./,/.'])

console.log(s1, s2, s3)